---
title: HTTPS 对于安全的保障
description: HTTPS 对于安全的保障
date: 2022-03-27 16:11:11
---
import Alert from '@/components/post/alert.astro'

[[toc]]

## 加密-防窃听

**非对称加密传递对称加密的秘钥**

**使用对称加密的秘钥对通信的内容进行加解密**

## 数字签名-防篡改

类似于校验码，会附加在要传输信息的尾部

<Alert type="warning">**原信息与数字签名任何一个修改都会导致无法通过校验**</Alert>

**流程：**
  - 发送方**使用私钥加密源文件的摘要**
  - 接收方得到源文件：
    - 计算源文件的摘要，得到结果 A
    - **使用公钥解密数字签名**，得到结果 B
    - A 与 B 完全相同，证明文件未被篡改

<Alert type="warning">**并没有防止窃听，只能保证发送的数据和收到的数据是一样的**</Alert>

## 数字证书-保障身份可信

**数字证书颁发机构（CA）是通信中的权威机构，所有用户都信任它**

**流程：**
- **发送方将自己公钥交给 CA**
- CA 使用自己的私钥对发送方的公钥进行加密，得到的结果再生成**数字证书**，然后返还给 A
- 正式的通信流程：
  - 发送方将自己的**数字证书**发送给接收方
  - **接收方使用 CA 的公钥对数字证书进行解密，解密成功得到发送方的公钥**

### TLS 握手

1. 客户端向服务器发出加密通信的请求，并携带**随机数 i**
2. 服务器将数字证书发送给客户端，并携带**随机数 j**
3. 客户端校验数字证书，得到服务器的**公钥**
4. 客户端使用**公钥加密**一个**随机数 k**，发送给服务器，**自己使用 ijk 生成对称加密秘钥**
5. 服务器使用**私钥解密**，得到 k，**使用 ijk 生成对称加密秘钥**
6. 服务器发送握手完毕的消息，之后**使用对称加密秘钥加密通信**
